package io.plus.common.packet.metadata;

public enum Command {
    unknow(0),
    /**
     * 握手
     */
    handshake_request(1),
    handshake_response(2),
    /**
     * 鉴权
     */
    auth_request(3),
    auth_response(4),
    /**
     * 登录
     */
    login_request(5),
    login_respnse(6),
    /**
     * 申请进入群组
     */
    join_group_request(7),
    join_group_response(8),
    /**
     * 进入群组通知
     */
    join_group_notify_response(9),
    /**
     * 退出群组通知
     */
    exit_group_notify_response(10),
    /**
     * 聊天请求
     */
    chat_request(11),
    chat_response(12),
    /**
     * 心跳请求
     */
    heartbeat_request(13),
    heartbeat_response(13),
    /**
     * 关闭请求
     */
    close_request(14),
    /**
     * 发出撤消消息指令(管理员可以撤消所有人的消息，自己可以撤消自己的消息)
     */
    cancel_message_request(15),
    cancel_message_response(16),
    /**
     * 获取用户信息
     */
    get_user_info_request(17),
    get_user_info_response(18),
    /**
     * 获取聊天消息
     */
    get_message_request(19),
    get_message_response(20),
    ;


    private final int value;

    Command(int value) {
        this.value = value;
    }

    public static Command forNumber(int value) {
        for (Command command : Command.values()) {
            if (command.getNumber() == value) {
                return command;
            }
        }
        return null;
    }


    public final int getNumber() {
        return value;
    }
}

